//package com.fingard.dsp.bank.directbank.ccb04;
//
//import com.fingard.constant.Format;
//import com.fingard.diagnostics.LogHelper;
//import com.fingard.dsp.bank.directbank.bankInterface.ITransaction;
//import com.fingard.dsp.bank.reqrespobj.enumeration.ENDirectRight;
//import com.fingard.dsp.bank.reqrespobj.transaction.Req7515TodayTrans;
//import com.fingard.dsp.bank.reqrespobj.transaction.Req7516HisTrans;
//import com.fingard.dsp.bank.reqrespobj.transaction.RetAtsTrans;
//import com.fingard.dsp.bank.reqrespobj.transaction.detail.RetAtsTransDetail;
//import com.fingard.text.StringHelper;
//import com.fingard.util.DateHelper;
//import com.fingard.xml.XmlTextReader;
//import com.fingard.xml.XmlTextWriter;
//
//import java.io.File;
//import java.math.BigDecimal;
//import java.util.Calendar;
//import java.util.Date;
//
//public class CCB04Transaction extends CCB04Base implements ITransaction {
//
//    /**
//     * 是否为电子回单查询发起
//     */
//    public boolean isFromReceiptQry = false;
//
//    //采用流处理方式
//    //1、循环调用readRecord()读取一个请求明细，然后写入发银行的XML对象
//    //2、发银行
//    //3、循环调用XmlTextReader.read()读取一个银行返回节点，赋值返回ATS的明细对象，
//    //   然后调用writeRetDetail()，写入返回ATS的明细
//    @Override
//    public RetAtsTrans d_7516_HisTrans(Req7516HisTrans p_req7516) throws Exception {
//        //ATSES-24859 建行新一代现金池明细查询接口
//        if (p_req7516.directRight != null && p_req7516.directRight.contains(ENDirectRight.CASHPOOLS.getValue())) {
//            return qryCashPoolTrans(p_req7516);
//        }
//        WriteBankLogLn("普通账户明细查询...");
//        //历史明细查询返回ATS的对象
//        RetAtsTrans retAts = new RetAtsTrans(p_req7516.reqHeader);
//        String tmpRespCode = "";
//        String tmpRespInfo = "";
//        retAts.writeStart();//写返回ATS的统一头部信息
//        //查询之前做登录操作 下载公钥密钥 进行3des加密 和md5withRSA签名 byte[]数据和String进行base64互转
//        //ReceiptDataHelper receiptHelper = null;
//        //Date receiptDate = null;
//        int receiptTotalCount = 0;
//        int receiptSuccCount = 0;
//        int receiptExistCount = 0;
//        int receiptFailCount = 0;
//
//        try {
//            getBnkToken();
////            if (triDesKeys != null && triDesKeys.length != 1024) {
//            if (StringHelper.hasAnyChar(bankFront.token)) {
//                if (new File(String.format("%1$s%2$s_BnkPubKey.txt", strtmpFile, bankFront.org)).exists()) {
//                    if (!"".equals(bankFront.loginFlag) && !"false".equals(bankFront.loginFlag)) {
//                        txCode = "P1CMSER65";
//                        //tmpClndrStepTo.get(Calendar.MONTH) MONTH是从0开始编的，意味着0是1月，11是12月
//                        Calendar tmpCalendarFrom = Calendar.getInstance();
//                        tmpCalendarFrom.setTime(p_req7516.getDateFrom());
//
//                        Calendar tmpCalendarTo = Calendar.getInstance();
//                        tmpCalendarTo.setTime(p_req7516.getDateTo());
//                        int tmpIntDateFrom = 0;
//                        int tmpIntDateTo = 0;
//                        //按自然月循环查询
//                        while (tmpIntDateFrom <= tmpIntDateTo && !"-1".equals(tmpRespCode)) {
//                            Calendar tmpClndrStepTo = Calendar.getInstance();
//                            tmpClndrStepTo.setTime(tmpCalendarFrom.getTime());
//                            //判断是否跨月
//                            if (DateHelper.compareMonth(tmpCalendarFrom, tmpCalendarTo) == -1) {
//                                //跨月则设置为月末
//                                tmpClndrStepTo.set(Calendar.DAY_OF_MONTH, tmpClndrStepTo.getActualMaximum(Calendar.DAY_OF_MONTH));
//                            } else {
//                                tmpClndrStepTo.setTime(tmpCalendarTo.getTime());
//                            }
//
//                            //int tmpNowStartRecord = 0;//总条数
//                            int intPageNumber = 1;//页码数 默认查询第一页
//                            int tmpNowReadedCount = 0;//已读条数
//                            page = String.valueOf(intPageNumber);
//
//                            boolean tmpQryNext = true;
//                            while (tmpQryNext && tmpRespCode.length() == 0) {//分页查询
//                                tmpQryNext = false;
//                                XmlTextWriter xmlWriterWithoutCDATA = new XmlTextWriter();//发银行报文的XML对象
//                                writeCommonHeaderWithoutCDATA(xmlWriterWithoutCDATA);
//                                xmlWriterWithoutCDATA.writeStartElement("request");
//                                xmlWriterWithoutCDATA.writeElementString("Rvl_Rcrd_Num", "1");
//                                xmlWriterWithoutCDATA.writeStartElement("LIST1");
//                                xmlWriterWithoutCDATA.writeElementString("AccNo", p_req7516.actNum);
//                                xmlWriterWithoutCDATA.writeEndElement();
//                                xmlWriterWithoutCDATA.writeElementString("Beg_Dtl_No", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("End_Dtl_No", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("StDt", Format.Date8Format.format(tmpCalendarFrom.getTime()));
//                                xmlWriterWithoutCDATA.writeElementString("EdDt", Format.Date8Format.format(tmpClndrStepTo.getTime()));
//                                xmlWriterWithoutCDATA.writeElementString("Amt_LwrLmt_Val", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("ZONE_TP", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("Amt_UpLm_Val", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("DbtCrDrcCd", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("Cntrprt_AccNm", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("CntprtAcc", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("Enqr_Dtl_TpCd", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("CcyCd", convertCurToBank(p_req7516.actCur));
//                                xmlWriterWithoutCDATA.writeElementString("Acrt_Enqr_Ind", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("Rmrk", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("Rvrs_Txn_Ind", "", true);
//                                xmlWriterWithoutCDATA.writeElementString("ASPD_ECD", "00000886");
//                                writeComEntityWithoutCDATA(xmlWriterWithoutCDATA);
//                                xmlWriterWithoutCDATA.writeEndDocument();
//                                int n = xmlWriterWithoutCDATA.toXmlString().length();
//                                xmlLength = decimalFormat.format(n);
//                                WriteBankLogLn("无CDATA:\n" + xmlWriterWithoutCDATA.toXmlString());
//
//                                XmlTextWriter xmlWriter = new XmlTextWriter();//发银行报文的XML对象
//                                //写入通用的头部节点
//                                writeCommonHeader(xmlWriter);
//                                xmlWriter.writeStartElement("request");
//                                xmlWriter.writeElementCDATA("Rvl_Rcrd_Num", "1");
//                                xmlWriter.writeStartElement("LIST1");
//                                xmlWriter.writeElementCDATA("AccNo", p_req7516.actNum);
//                                xmlWriter.writeEndElement();
//                                xmlWriter.writeElementCDATA("Beg_Dtl_No", "");
//                                xmlWriter.writeElementCDATA("End_Dtl_No", "");
//                                xmlWriter.writeElementCDATA("StDt", Format.Date8Format.format(tmpCalendarFrom.getTime()));
//                                xmlWriter.writeElementCDATA("EdDt", Format.Date8Format.format(tmpClndrStepTo.getTime()));
//                                xmlWriter.writeElementCDATA("Amt_LwrLmt_Val", "");
//                                xmlWriter.writeElementCDATA("ZONE_TP", "");
//                                xmlWriter.writeElementCDATA("Amt_UpLm_Val", "");
//                                xmlWriter.writeElementCDATA("DbtCrDrcCd", "");
//                                xmlWriter.writeElementCDATA("Cntrprt_AccNm", "");
//                                xmlWriter.writeElementCDATA("CntprtAcc", "");
//                                xmlWriter.writeElementCDATA("Enqr_Dtl_TpCd", "");
//                                xmlWriter.writeElementCDATA("CcyCd", convertCurToBank(p_req7516.actCur));
//                                xmlWriter.writeElementCDATA("Acrt_Enqr_Ind", "");
//                                xmlWriter.writeElementCDATA("Rmrk", "");
//                                xmlWriter.writeElementCDATA("Rvrs_Txn_Ind", "");
//                                xmlWriter.writeElementCDATA("ASPD_ECD", "00000886");
//                                writeComEntity(xmlWriter);
//                                xmlWriter.writeEndDocument();
//                                String[] tmpStrRet = new String[2];
//
//
//                                tmpStrRet = sendToBank(xmlWriter.toXmlString());
//
//                                XmlTextReader tmpBkReader = null;
//                                StringBuilder tmpSbMsg = new StringBuilder();
//
//                                tmpBkReader = getBankInfo(tmpStrRet[1], tmpSbMsg);
//
//                                String xln_status = tmpBkReader.getFirstText("/Transaction/Transaction_Header/SYS_TX_STATUS"); // 服务状态
//                                String xln_resp_code = tmpBkReader.getFirstText("/Transaction/Transaction_Header/SYS_RESP_CODE"); // 服务响应码
//                                String xln_resp_desc = tmpBkReader.getFirstText("/Transaction/Transaction_Header/SYS_RESP_DESC"); // 服务响应描述
//                                if (tmpStrRet[0].length() == 0) {
//                                    if (IsResultInvlid(tmpStrRet[1], tmpBkReader, false, retAts)) {
//                                        if ("00".equals(xln_status) && "000000000000".equals(xln_resp_code)){
//                                            int recordNum = Integer.parseInt(tmpBkReader.getFirstText("/Transaction/Transaction_Body/response/TOTAL_REC"));
//                                            if (recordNum > 0) {
//                                                int tmpTotalRocords = 0;//总条数
////                                            int tmpPage = 0;
////                                            tmpPage = Integer.parseInt(tmpBkReader.getFirstText("/Transaction/Transaction_Body/response/TOTAL_PAGE"));
//                                                tmpTotalRocords = recordNum;
//                                                int tmpEachPiCount = 0;
//                                                while (tmpBkReader.read("/Transaction/Transaction_Body/response/LIST1")) {
//                                                    tmpEachPiCount++;
//                                                    RetAtsTransDetail tmpRetDetail = new RetAtsTransDetail();
//                                                    tmpRetDetail.actNum = tmpBkReader.readedXElement.getSingleText("AccNo");
//                                                    tmpRetDetail.recAccNum = tmpBkReader.readedXElement.getSingleText("CntprtAcc");
//                                                    tmpRetDetail.recAccName = tmpBkReader.readedXElement.getSingleText("Cntrprt_AccNm");
//                                                    tmpRetDetail.recAccBank = tmpBkReader.readedXElement.getSingleText("CADBank_Nm");
//
//                                                    String creditDebitFlag = tmpBkReader.readedXElement.getSingleText("DbtCrDrcCd");//1-借或表外收、2-贷或表外付
//                                                    String tranAmount = tmpBkReader.readedXElement.getSingleText("Hpn_Amt");
//                                                    if (creditDebitFlag != null) {
//                                                        if (creditDebitFlag.equals("1")) // 原先是D 借贷标识
//                                                        {
//                                                            if (tranAmount.indexOf("-") >= 0) {
//                                                                tmpRetDetail.cdFlag = "2";
//                                                            } else {
//                                                                tmpRetDetail.cdFlag = "1";
//                                                            }
//                                                        } else if (creditDebitFlag.equals("2")) {
//                                                            if (tranAmount.indexOf("-") >= 0) {
//                                                                tmpRetDetail.cdFlag = "1";
//                                                            } else {
//                                                                tmpRetDetail.cdFlag = "2";
//                                                            }
//                                                        } else {
//                                                            tmpRespCode = "-1";
//                                                            tmpRespInfo = "借贷标志( " + creditDebitFlag + ")无法识别，请与银行核对";
//                                                            retAts = new RetAtsTrans(p_req7516.reqHeader);
//                                                            retAts.writeStart();//写返回ATS的统一头部信息
//                                                            retAts.writeRespCode(tmpRespCode);
//                                                            retAts.writeRespInfo(tmpRespInfo);
//                                                            retAts.writeEnd();
//                                                            return retAts;
//                                                        }
//                                                    }
//                                                    tmpRetDetail.tranAmt = tranAmount.replace("-", "");
//                                                    String tranDate = tmpBkReader.readedXElement.getSingleText("Txn_Dt");//yyyyMMdd 交易时间20200228  系统格式为yyyy-MM-dd hh:mm:ss;
//                                                    String tranTimeDate = tmpBkReader.readedXElement.getSingleText("Stm_Dt");
//                                                    tmpRetDetail.accBal = tmpBkReader.readedXElement.getSingleText("AcBa").trim();//余额
//                                                    if("true".equals(this.getBankConfig().getValueAsString("isUseNewTransactionDate","false"))){
//                                                        String useStartDate = this.getBankConfig().getValueAsString("useTransactionDateStartDate");
//                                                        if(StringHelper.hasAnyChar(useStartDate)){
//                                                            if(comprareTime(useStartDate,tranTimeDate)){
//                                                                tranDate = tmpBkReader.readedXElement.getSingleText("Stm_Dt");
//                                                            }
//                                                        }
//                                                    }
//                                                    String tranTime = tmpBkReader.readedXElement.getSingleText("Txn_Tm");//hhmmss 232227
//                                                    tmpRetDetail.tranDate = tranDate.substring(0, 4) + "-" + tranDate.substring(4, 6) + "-" + tranDate.substring(6);
//                                                    tmpRetDetail.tranTime = tranTimeDate.substring(0, 4) + "-" + tranTimeDate.substring(4, 6) + "-" + tranTimeDate.substring(6) + " " + tranTime.substring(0, 2) + ":" + tranTime.substring(2, 4) + ":" + tranTime.substring(4);
//                                                    tmpRetDetail.valueDate = tmpRetDetail.tranDate;////起息日没有返回就用交易日
//                                                    String rmrk = tmpBkReader.readedXElement.getSingleText("Rmrk");
//                                                    tmpRetDetail.usage = rmrk;
//                                                    StringBuilder sb = new StringBuilder();
//                                                    String smy = tmpBkReader.readedXElement.getSingleText("Smy");
//                                                    if (!"".equals(smy)) {
//                                                        sb.append(smy).append(";");
//                                                    }
//                                                    if (!"".equals(rmrk)) {
//                                                        sb.append(rmrk).append(";");
//                                                    }
//                                                    String tmpFlag = tmpBkReader.readedXElement.getSingleText("CshEx_Cd");
//                                                    if ("0".equals(tmpFlag)) {
//                                                        sb.append("钞户" + ";");
//                                                    } else if ("1".equals(tmpFlag)) {
//                                                        sb.append("汇户" + ";");
//                                                    }
//                                                    String txnNO = tmpBkReader.readedXElement.getSingleText("Txn_Dtl_No");
//                                                    if (!"".equals(txnNO)) {
//                                                        sb.append(txnNO);
//                                                    }
//                                                    tmpRetDetail.comment = sb.toString();
//                                                    tmpRetDetail.abstr = pickupAbstr(tmpRetDetail.usage);
//                                                    tmpRetDetail.cur = convertCurToATS(tmpBkReader.readedXElement.getSingleText("CcyCd"));
//                                                    if (StringHelper.isNullOrEmpty(tmpRetDetail.actNum)) {
//                                                        tmpRetDetail.actNum = p_req7516.actNum;
//                                                    }
//                                                    tmpRetDetail.urid = tmpBkReader.readedXElement.getSingleText("Bnk_Only1_ID_ID");
//                                                    tmpRetDetail.busRef = tmpBkReader.readedXElement.getSingleText("ExoStm_Py_Rmrk");
//                                                    tmpRetDetail.askNumber = tmpBkReader.readedXElement.getSingleText("ExoStm_Py_Rmrk");
//                                                    tmpRetDetail.payCode = tmpBkReader.readedXElement.getSingleText("ExoStm_Py_Rmrk");
//                                                    tmpRetDetail.receiptNo = tmpBkReader.readedXElement.getSingleText("CCBS_TxnSrlNo");
//                                                    tmpRetDetail.bnkSeqNo = tmpRetDetail.receiptNo;
//
//                                                    tmpRetDetail.billNum = tmpBkReader.readedXElement.getSingleText("Vchr_No");
//
//                                                    if (isFromReceiptQry) {
//                                                        WriteBankLogLn("当前CCBS_TxnSrlNos中'receiptNo'值为:" + tmpRetDetail.receiptNo + ",'askNumber'值为:" + tmpRetDetail.askNumber);
//                                                        //CCBS_TxnSrlNos流水号
//                                                        if (tmpRetDetail.receiptNo != null && !"".equals(tmpRetDetail.receiptNo)) {
//                                                            CCBS_TxnSrlNos.put(tmpRetDetail.receiptNo, tmpRetDetail.askNumber);
//                                                        }
//	                                                    /*
//	                                                    ReceiptData rcpt = new ReceiptData();
//	                                                    rcpt.fromTransDetail(p_req7516, tmpRetDetail);
//	                                                    if(receiptHelper == null){
//	                                                    	receiptDate = Format.Date10Format.parse(tmpRetDetail.tranDate);
//	                                                    	receiptHelper = new ReceiptDataHelper(p_req7516.reqHeader.tenant, receiptDate);//分区库
//	                                                    }else{
//	                                                    	Date cmpDate = Format.Date10Format.parse(tmpRetDetail.tranDate);
//	                                                    	if(DateHelper.compareDay(receiptDate, cmpDate) != 0){
//	                                                    		receiptHelper.close();
//	                                                    		receiptDate = cmpDate;
//	                                                    		//分区库，时间不同，需新初始化
//	                                                    		receiptHelper = new ReceiptDataHelper(p_req7516.reqHeader.tenant, receiptDate);
//	                                                    	}
//	                                                    }
//	                                                    try{
//	                                                    	receiptTotalCount++;
//	                                                    	int inRe = receiptHelper.insertIfNotExist(rcpt);
//	                                                    	if(inRe == 1){
//	                                                    		receiptSuccCount++;
//	                                                    	}else{
//	                                                    		receiptExistCount++;
//	                                                    	}
//	                                                    }catch(Exception ex){
//	                                                    	receiptFailCount++;
//	                                                    	this.WriteBankLogLn(ex);
//	                                                    }
//	                                                    */
//                                                    }
//                                                    nodeAnalysic(tmpBkReader.readedXElement, tmpRetDetail, getCharset());
//                                                    retAts.writeRetDetail(tmpRetDetail);
//
//                                                }
//                                                tmpNowReadedCount += tmpEachPiCount;//总记录数
//                                                if (tmpNowReadedCount < tmpTotalRocords)//查询下一页
//                                                {
//                                                    intPageNumber = intPageNumber + 1;//页码加一 查询第二页
//                                                    page = String.valueOf(intPageNumber);
////                                                    tmpNowStartRecord = tmpNowReadedCount + 1;//记录已经查询的记录个数
//                                                    tmpQryNext = true;
//
//
//                                                } else if (tmpNowReadedCount == tmpTotalRocords)//本次分页查询完毕
//                                                {
//                                                    break;
//                                                }
//                                            } else {
//                                                tmpRespInfo = "无查询数据";
//                                                break;
//                                            }
//                                        }else {
//                                            tmpRespCode = "-1";
//                                            tmpRespInfo = xln_status + xln_resp_code + xln_resp_desc;
//                                            break;
//                                        }
//                                    } else {
//                                        tmpRespCode = "-1";
//                                        tmpRespInfo = xln_status + xln_resp_code + xln_resp_desc;
//                                        break;
//                                    }
//                                } else {
//                                    tmpRespCode = "-1";
//                                    tmpRespInfo = tmpStrRet[1];
//                                    break;
//                                }
//                            }
//                            tmpCalendarFrom = tmpClndrStepTo;
//                            tmpCalendarFrom.add(Calendar.DAY_OF_MONTH, 1);
//                            tmpIntDateFrom = Integer.parseInt(Format.Date8Format.format(tmpCalendarFrom.getTime()));
//                            tmpIntDateTo = Integer.parseInt(Format.Date8Format.format(tmpCalendarTo.getTime()));
//                        }
//                    } else {
//                        tmpRespCode = "-1";
//                        tmpRespInfo = "签到失败";
//                        //retAts.writeRespCode("-1");
//                        //retAts.writeRespInfo("签到失败");
//                    }
//                } else {
//                    tmpRespCode = "-1";
//                    tmpRespInfo = "下载银行pub密钥失败";
//                    //retAts.writeRespCode("-1");
//                    //retAts.writeRespInfo("下载银行pub密钥失败");
//                }
//            } else {
//                tmpRespCode = "-1";
//                tmpRespInfo = "下载银行3des密钥失败";
//                //retAts.writeRespCode("-1");
//                //retAts.writeRespInfo("下载银行3des密钥失败");
//            }
//        } catch (Exception e) {
//            this.WriteBankLogLn(e);
//            tmpRespCode = "-1";
//            tmpRespInfo = LogHelper.getStackTraceFirstLine(e);
//        } finally {
//            //if(receiptHelper != null){
//            //	receiptHelper.close();
//            //}
//        }
//        if (this.isFromReceiptQry) {
//            this.WriteBankLogLn("回单数据总数" + receiptTotalCount + "条，成功写入" + receiptSuccCount + "条，已存在" + receiptExistCount + "条，失败" + receiptFailCount + "条");
//        }
//        if (tmpRespCode.equals("-1")) {
//            retAts = new RetAtsTrans(p_req7516.reqHeader);
//            retAts.writeStart();//写返回ATS的统一头部信息
//            retAts.writeRespCode(tmpRespCode);
//            retAts.writeRespInfo(tmpRespInfo);
//        } else if (retAts.getWrittenRdCount() == 0) {
//            retAts.writeRespCode("0");
//            retAts.writeRespInfo("交易为空");
//        }
//        retAts.writeEnd();
//        return retAts;
//    }
//
//    //现金池明细查询
//    public RetAtsTrans qryCashPoolTrans(Req7516HisTrans p_req7516) throws Exception {
//        WriteBankLogLn("进入建行新一代现金池明细查询接口...");
//        //历史明细查询返回ATS的对象
//        RetAtsTrans retAts = new RetAtsTrans(p_req7516.reqHeader);
//        String tmpRespCode = "";
//        String tmpRespInfo = "";
//        retAts.writeStart();//写返回ATS的统一头部信息
//        try {
//            getBnkToken();
//            if (StringHelper.hasAnyChar(bankFront.token)) {
//                if (new File(String.format("%1$s%2$s_BnkPubKey.txt", strtmpFile, bankFront.org)).exists()) {
//                    if (!"".equals(bankFront.loginFlag) && !"false".equals(bankFront.loginFlag)) {
//                        txCode = "P1CMSERB4";
//                        Calendar tmpCalendarFrom = Calendar.getInstance();
//                        tmpCalendarFrom.setTime(p_req7516.getDateFrom());
//
//                        Calendar tmpCalendarTo = Calendar.getInstance();
//                        tmpCalendarTo.setTime(p_req7516.getDateTo());
//                        int tmpIntDateFrom = 0;
//                        int tmpIntDateTo = 0;
//                        //按自然月循环查询
//                        while (tmpIntDateFrom <= tmpIntDateTo && !"-1".equals(tmpRespCode)) {
//                            Calendar tmpClndrStepTo = Calendar.getInstance();
//                            tmpClndrStepTo.setTime(tmpCalendarFrom.getTime());
//                            //判断是否跨月
//                            if (DateHelper.compareMonth(tmpCalendarFrom, tmpCalendarTo) == -1) {
//                                //跨月则设置为月末
//                                tmpClndrStepTo.set(Calendar.DAY_OF_MONTH, tmpClndrStepTo.getActualMaximum(Calendar.DAY_OF_MONTH));
//                            } else {
//                                tmpClndrStepTo.setTime(tmpCalendarTo.getTime());
//                            }
//
//                            int intPageNumber = 1;//页码数 默认查询第一页
//                            int totalPage = 1;//总页码数
//                            page = String.valueOf(intPageNumber);
//                            boolean tmpQryNext = true;
//                            //分页查询
//                            while (tmpQryNext && tmpRespCode.length() == 0) {
//                                tmpQryNext = false;
//                                XmlTextWriter xmlWriterWithoutCDATA = new XmlTextWriter();//发银行报文的XML对象
//                                writeCommonHeaderWithoutCDATA(xmlWriterWithoutCDATA);
//                                xmlWriterWithoutCDATA.writeStartElement("request");
//                                xmlWriterWithoutCDATA.writeElementString("ASPD_ECD", "00000886");//客户内部账户管理
//                                writeComEntityWithoutCDATA(xmlWriterWithoutCDATA);
//                                xmlWriterWithoutCDATA.writeElementString("Show_Grp_Lnkg_Txn_Ind", "", true);//展示集团联动交易标志
//                                xmlWriterWithoutCDATA.writeElementString("Rvl_Rcrd_Num", "1");//循环记录条数
//                                xmlWriterWithoutCDATA.writeStartElement("LIST1");
//                                xmlWriterWithoutCDATA.writeElementString("AccNo", p_req7516.actNum);//账号
//                                xmlWriterWithoutCDATA.writeElementString("Beg_Dtl_No", "", true);//起始明细号
//                                xmlWriterWithoutCDATA.writeElementString("End_Dtl_No", "", true);//结束明细号
//                                xmlWriterWithoutCDATA.writeEndElement();//LIST1
//                                xmlWriterWithoutCDATA.writeElementString("Enqr_StDt", Format.Date8Format.format(tmpCalendarFrom.getTime()));//查询起始日期
//                                xmlWriterWithoutCDATA.writeElementString("Enqr_CODt", Format.Date8Format.format(tmpClndrStepTo.getTime()));//查询截止日期
//
//                                xmlWriterWithoutCDATA.writeElementString("Rvl_Rcrd_Num_1", "2", true);//循环记录条数
//                                xmlWriterWithoutCDATA.writeStartElement("LIST2");
//                                xmlWriterWithoutCDATA.writeElementString("Tres_Gthr_Cd", "1", true);//上级过滤
//                                xmlWriterWithoutCDATA.writeEndElement();//LIST2
//                                xmlWriterWithoutCDATA.writeStartElement("LIST2");
//                                xmlWriterWithoutCDATA.writeElementString("Tres_Gthr_Cd", "2", true);//下级过滤
//                                xmlWriterWithoutCDATA.writeEndElement();//LIST2
//
//                                xmlWriterWithoutCDATA.writeElementString("Rvl_Rcrd_Num_2", "", true);//循环记录条数
//                                xmlWriterWithoutCDATA.writeStartElement("LIST3");
//                                xmlWriterWithoutCDATA.writeElementString("Smy_Cd", "", true);//摘要代码
//                                xmlWriterWithoutCDATA.writeEndElement();//LIST3
//
//                                xmlWriterWithoutCDATA.writeElementString("CcyCd", convertCurToBank(p_req7516.actCur));//币种代码
//                                xmlWriterWithoutCDATA.writeElementString("CshEx_Cd", "", true);//钞汇代码
//                                xmlWriterWithoutCDATA.writeElementString("CntprtAcc", "", true);//对方账号
//                                xmlWriterWithoutCDATA.writeElementString("Cntrprt_AccNm", "", true);//对方账户名称
//                                xmlWriterWithoutCDATA.writeElementString("DbtCrDrcCd", "", true);//借贷方向代码 0:全部 1:转出 2:转入 默认为全部
//                                xmlWriterWithoutCDATA.writeElementString("Amt_LwrLmt_Val", "", true);//金额下限值
//                                xmlWriterWithoutCDATA.writeElementString("ZONE_TP", "", true);//区间类型 00 - 左开右开 11 - 左闭右闭 默认为11
//                                xmlWriterWithoutCDATA.writeElementString("Amt_UpLm_Val", "", true);//金额上限值
//                                xmlWriterWithoutCDATA.writeElementString("Rmrk", "", true);//备注
//                                xmlWriterWithoutCDATA.writeEndDocument();
//                                int n = xmlWriterWithoutCDATA.toXmlString().length();
//                                xmlLength = decimalFormat.format(n);
//                                WriteBankLogLn("无CDATA:\n" + xmlWriterWithoutCDATA.toXmlString());
//
//
//                                XmlTextWriter xmlWriter = new XmlTextWriter();//发银行报文的XML对象
//                                //写入通用的头部节点
//                                writeCommonHeader(xmlWriter);
//                                xmlWriter.writeStartElement("request");
//                                xmlWriter.writeElementString("ASPD_ECD", "00000886");//客户内部账户管理
//                                writeComEntity(xmlWriter);
//                                xmlWriter.writeElementString("Show_Grp_Lnkg_Txn_Ind", "", true);//展示集团联动交易标志
//                                xmlWriter.writeElementString("Rvl_Rcrd_Num", "1");//循环记录条数
//                                xmlWriter.writeStartElement("LIST1");
//                                xmlWriter.writeElementString("AccNo", p_req7516.actNum);//账号
//                                xmlWriter.writeElementString("Beg_Dtl_No", "", true);//起始明细号
//                                xmlWriter.writeElementString("End_Dtl_No", "", true);//结束明细号
//                                xmlWriter.writeEndElement();//LIST1
//                                xmlWriter.writeElementString("Enqr_StDt", Format.Date8Format.format(tmpCalendarFrom.getTime()));//查询起始日期
//                                xmlWriter.writeElementString("Enqr_CODt", Format.Date8Format.format(tmpClndrStepTo.getTime()));//查询截止日期
//
//                                xmlWriter.writeElementString("Rvl_Rcrd_Num_1", "2", true);//循环记录条数
//                                xmlWriter.writeStartElement("LIST2");
//                                xmlWriter.writeElementString("Tres_Gthr_Cd", "1", true);//财资归集代码
//                                xmlWriter.writeEndElement();//LIST2
//                                xmlWriter.writeStartElement("LIST2");
//                                xmlWriter.writeElementString("Tres_Gthr_Cd", "2", true);//财资归集代码
//                                xmlWriter.writeEndElement();//LIST2
//
//                                xmlWriter.writeElementString("Rvl_Rcrd_Num_2", "", true);//循环记录条数
//                                xmlWriter.writeStartElement("LIST3");
//                                xmlWriter.writeElementString("Smy_Cd", "", true);//摘要代码
//                                xmlWriter.writeEndElement();//LIST3
//
//                                xmlWriter.writeElementString("CcyCd", convertCurToBank(p_req7516.actCur));//币种代码
//                                xmlWriter.writeElementString("CshEx_Cd", "", true);//钞汇代码
//                                xmlWriter.writeElementString("CntprtAcc", "", true);//对方账号
//                                xmlWriter.writeElementString("Cntrprt_AccNm", "", true);//对方账户名称
//                                xmlWriter.writeElementString("DbtCrDrcCd", "", true);//借贷方向代码 0:全部 1:转出 2:转入 默认为全部
//                                xmlWriter.writeElementString("Amt_LwrLmt_Val", "", true);//金额下限值
//                                xmlWriter.writeElementString("ZONE_TP", "", true);//区间类型 00 - 左开右开 11 - 左闭右闭 默认为11
//                                xmlWriter.writeElementString("Amt_UpLm_Val", "", true);//金额上限值
//                                xmlWriter.writeElementString("Rmrk", "", true);//备注
//                                xmlWriter.writeEndDocument();
//
//                                String[] tmpStrRet = sendToBank(xmlWriter.toXmlString());
//
//                                XmlTextReader tmpBkReader = null;
//                                StringBuilder tmpSbMsg = new StringBuilder();
//
//                                tmpBkReader = getBankInfo(tmpStrRet[1], tmpSbMsg);
//
//                                String xln_status = tmpBkReader.getFirstText("/Transaction/Transaction_Header/SYS_TX_STATUS"); // 服务状态
//                                String xln_resp_code = tmpBkReader.getFirstText("/Transaction/Transaction_Header/SYS_RESP_CODE"); // 服务响应码
//                                String xln_resp_desc = tmpBkReader.getFirstText("/Transaction/Transaction_Header/SYS_RESP_DESC"); // 服务响应描述
//                                if (tmpStrRet[0].length() == 0) {
//                                    if (IsResultInvlid(tmpStrRet[1], tmpBkReader, false, retAts)) {
//                                        int recordNum = Integer.parseInt(tmpBkReader.getFirstText("/Transaction/Transaction_Header/TOTAL_REC"));
//                                        totalPage = Integer.parseInt(tmpBkReader.getFirstText("/Transaction/Transaction_Header/TOTAL_PAGE"));
//                                        if (recordNum > 0) {
//                                            while (tmpBkReader.read("/Transaction/Transaction_Body/response/LIST1")) {
//                                                RetAtsTransDetail tmpRetDetail = new RetAtsTransDetail();
//                                                tmpRetDetail.actNum = tmpBkReader.readedXElement.getSingleText("AccNo");
//                                                tmpRetDetail.recAccNum = tmpBkReader.readedXElement.getSingleText("CntprtAcc");
//                                                tmpRetDetail.recAccName = tmpBkReader.readedXElement.getSingleText("Cntrprt_AccNm");
//                                                tmpRetDetail.recAccBank = tmpBkReader.readedXElement.getSingleText("CADBank_BrNo");
//
//                                                String creditDebitFlag = tmpBkReader.readedXElement.getSingleText("DbtCrDrcCd");//借贷标志 1-借 2-贷
//                                                String DHAmt = tmpBkReader.readedXElement.getSingleText("DHAmt");//借方发生额
//                                                String Cr_HpnAm = tmpBkReader.readedXElement.getSingleText("Cr_HpnAm");//贷方发生额
//                                                if (!StringHelper.isNullOrEmpty(creditDebitFlag)) {
//                                                    if (creditDebitFlag.equals("1")) // 银行返回 借
//                                                    {
//                                                        if (DHAmt.indexOf("-") >= 0) {
//                                                            //虽然行方返回借 但借方发生额为负数 也判断为贷
//                                                            tmpRetDetail.cdFlag = "2";
//                                                        } else {
//                                                            tmpRetDetail.cdFlag = "1";
//                                                        }
//                                                        BigDecimal DHAmtDecimal = new BigDecimal(DHAmt);
//                                                        tmpRetDetail.tranAmt = DHAmtDecimal.abs().toPlainString();
////                                                        tmpRetDetail.tranAmt = Math.abs(Double.parseDouble(DHAmt)) + "";
//                                                    } else if (creditDebitFlag.equals("2")) {//银行返回 贷
//                                                        if (Cr_HpnAm.indexOf("-") >= 0) {
//                                                            tmpRetDetail.cdFlag = "1";
//                                                        } else {
//                                                            tmpRetDetail.cdFlag = "2";
//                                                        }
//                                                        BigDecimal Cr_HpnAmDecimal = new BigDecimal(Cr_HpnAm);
//                                                        tmpRetDetail.tranAmt = Cr_HpnAmDecimal.abs().toPlainString();
////                                                        tmpRetDetail.tranAmt = Math.abs(Double.parseDouble(Cr_HpnAm)) + "";
//                                                    } else {
//                                                        tmpRespCode = "-1";
//                                                        tmpRespInfo = "借贷标志( " + creditDebitFlag + ")无法识别，请与银行核对";
//                                                        retAts = new RetAtsTrans(p_req7516.reqHeader);
//                                                        retAts.writeStart();//写返回ATS的统一头部信息
//                                                        retAts.writeRespCode(tmpRespCode);
//                                                        retAts.writeRespInfo(tmpRespInfo);
//                                                        retAts.writeEnd();
//                                                        return retAts;
//                                                    }
//                                                }
//
//                                                tmpRetDetail.accBal = tmpBkReader.readedXElement.getSingleText("Bal").trim();//余额
//                                                tmpRetDetail.cashPoolBal = tmpBkReader.readedXElement.getSingleText("CshPl_Bal").trim();//现金池余额
//                                                String tranDate = tmpBkReader.readedXElement.getSingleText("Txn_Dt");//yyyyMMdd 交易日期
//                                                String tranTime = tmpBkReader.readedXElement.getSingleText("Txn_Tm");//hhmmss 交易时间
//                                                String valueDate = tmpBkReader.readedXElement.getSingleText("ValDt");//yyyyMMdd 起息日期
//                                                tmpRetDetail.tranDate = tranDate.substring(0, 4) + "-" + tranDate.substring(4, 6) + "-" + tranDate.substring(6);
//                                                tmpRetDetail.tranTime = tmpRetDetail.tranDate + " " + tranTime.substring(0, 2) + ":" + tranTime.substring(2, 4) + ":" + tranTime.substring(4);
//                                                if (!StringHelper.isNullOrEmpty(valueDate)) {
//                                                    tmpRetDetail.valueDate = valueDate.substring(0, 4) + "-" + valueDate.substring(4, 6) + "-" + valueDate.substring(6);
//                                                } else {
//                                                    tmpRetDetail.valueDate = tmpRetDetail.tranDate;
//                                                }
//
//
//                                                String rmrk = tmpBkReader.readedXElement.getSingleText("Rmrk");
//                                                tmpRetDetail.usage = rmrk;
//                                                StringBuilder sb = new StringBuilder();
//                                                String smy = tmpBkReader.readedXElement.getSingleText("Smy");
//                                                if (!StringHelper.isNullOrEmpty(smy)) {
//                                                    sb.append(smy).append(";");
//                                                }
//                                                if (!StringHelper.isNullOrEmpty(rmrk)) {
//                                                    sb.append(rmrk).append(";");
//                                                }
//                                                String tmpFlag = tmpBkReader.readedXElement.getSingleText("CshEx_Cd");
//                                                if ("0".equals(tmpFlag)) {
//                                                    sb.append("钞户" + ";");
//                                                } else if ("1".equals(tmpFlag)) {
//                                                    sb.append("汇户" + ";");
//                                                }
//                                                String txnNO = tmpBkReader.readedXElement.getSingleText("Txn_Dtl_No");
//                                                if (!StringHelper.isNullOrEmpty(txnNO)) {
//                                                    sb.append(txnNO);
//                                                }
//                                                tmpRetDetail.comment = sb.toString();
//                                                tmpRetDetail.abstr = pickupAbstr(tmpRetDetail.usage);
//                                                tmpRetDetail.cur = convertCurToATS(tmpBkReader.readedXElement.getSingleText("CcyCd"));
//                                                if (StringHelper.isNullOrEmpty(tmpRetDetail.actNum)) {
//                                                    tmpRetDetail.actNum = p_req7516.actNum;
//                                                }
//                                                tmpRetDetail.urid = tmpBkReader.readedXElement.getSingleText("Bnk_Only1_ID_ID");
//                                                tmpRetDetail.busRef = tmpBkReader.readedXElement.getSingleText("ExoStm_Py_Rmrk");
//                                                tmpRetDetail.askNumber = tmpBkReader.readedXElement.getSingleText("ExoStm_Py_Rmrk");
//                                                tmpRetDetail.receiptNo = tmpBkReader.readedXElement.getSingleText("CCBS_TxnSrlNo");
//                                                tmpRetDetail.bnkSeqNo = tmpRetDetail.receiptNo;
//                                                tmpRetDetail.billNum = tmpBkReader.readedXElement.getSingleText("Vchr_No");
//                                                if (isFromReceiptQry) {
//                                                    WriteBankLogLn("当前CCBS_TxnSrlNos中'receiptNo'值为:" + tmpRetDetail.receiptNo + ",'askNumber'值为:" + tmpRetDetail.askNumber);
//                                                    //CCBS_TxnSrlNos流水号
//                                                    if (tmpRetDetail.receiptNo != null && !"".equals(tmpRetDetail.receiptNo)) {
//                                                        CCBS_TxnSrlNos.put(tmpRetDetail.receiptNo, tmpRetDetail.askNumber);
//                                                    }
//                                                }
//                                                nodeAnalysic(tmpBkReader.readedXElement, tmpRetDetail, getCharset());
//                                                retAts.writeRetDetail(tmpRetDetail);
//                                            }
//
//                                            if (intPageNumber < totalPage) {//查询下一页
//                                                intPageNumber = intPageNumber + 1;//页码加一 查询第二页
//                                                page = String.valueOf(intPageNumber);
//                                                tmpQryNext = true;
//                                            } else {//本次分页查询完毕
//                                                break;
//                                            }
//                                        } else {
//                                            tmpRespCode = "0";
//                                            tmpRespInfo = "无查询数据";
//                                            break;
//                                        }
//                                    } else {
//                                        tmpRespCode = "-1";
//                                        tmpRespInfo = xln_status + xln_resp_code + xln_resp_desc;
//                                        break;
//                                    }
//                                } else {
//                                    tmpRespCode = "-1";
//                                    tmpRespInfo = tmpStrRet[1];
//                                    break;
//                                }
//                            }
//                            tmpCalendarFrom = tmpClndrStepTo;
//                            tmpCalendarFrom.add(Calendar.DAY_OF_MONTH, 1);
//                            tmpIntDateFrom = Integer.parseInt(Format.Date8Format.format(tmpCalendarFrom.getTime()));
//                            tmpIntDateTo = Integer.parseInt(Format.Date8Format.format(tmpCalendarTo.getTime()));
//                        }
//                    } else {
//                        tmpRespCode = "-1";
//                        tmpRespInfo = "签到失败";
//                    }
//                } else {
//                    tmpRespCode = "-1";
//                    tmpRespInfo = "下载银行pub密钥失败";
//                }
//            } else {
//                tmpRespCode = "-1";
//                tmpRespInfo = "下载银行3des密钥失败";
//            }
//        } catch (Exception e) {
//            this.WriteBankLogLn(e);
//            tmpRespCode = "-1";
//            tmpRespInfo = LogHelper.getStackTraceFirstLine(e);
//        }
//
//        if (tmpRespCode.equals("-1")) {
//            retAts = new RetAtsTrans(p_req7516.reqHeader);
//            retAts.writeStart();//写返回ATS的统一头部信息
//            retAts.writeRespCode(tmpRespCode);
//            retAts.writeRespInfo(tmpRespInfo);
//        } else if (retAts.getWrittenRdCount() == 0) {
//            retAts.writeRespCode("0");
//            retAts.writeRespInfo("交易为空");
//        }
//        retAts.writeEndWithoutInsertDB();
//        return retAts;
//    }
//
//    //当日明细查询调用历史明细查询方法
//    @Override
//    public RetAtsTrans d_7515_TodayTrans(Req7515TodayTrans p_req7515) throws Exception {
//        Req7516HisTrans tmpReq7516 = new Req7516HisTrans(p_req7515.reqHeader);
//        tmpReq7516.actArea = p_req7515.actArea;
//        tmpReq7516.actCur = p_req7515.actCur;
//        tmpReq7516.actNum = p_req7515.actNum;
//        tmpReq7516.directRight = p_req7515.directRight;
//        String tmpStrToday = Format.Date8Format.format(new Date());
//        tmpReq7516.dateFrom = tmpStrToday;
//        tmpReq7516.dateTo = tmpStrToday;
//        return d_7516_HisTrans(tmpReq7516);
//    }
//
//}
